/*
 * @ author madman 
 * @ use 接口配置
 * @ 逻辑层实现 /controllers/*
 */

import controllers from '../controllers/controllers.export';
import upload from '../middleware/upload';
const router = require('koa-router')();
const path = require('path')
const Utils = require('../controllers/utils');
const installData = require('../../src/data')

// cors 处理跨域
router.all('/api/**/*', async(ctx, next) => {
    ctx.set("Access-Control-Allow-Origin", "*");
    await next();
});
//判断函数是否存在
function isExitsFunction(funcName) {  
    try {  
        if (typeof (eval(funcName)) == "function") {  
            return true;  
        }  
    } catch (e) {  
    }  
    return false;  
}  
//统一添加路由 命名规则为 名称+Controller
const _router = [{
    'system': ['power', 'roles', 'user', 'parameter'] //系统相关
}, {
    'product': ['category','goods'] //商品相关
}, {
    'marketing': ['advertising'] //营销相关
}, {
    'news': ['article'] //新闻相关
}, {
    'pages': ['project', 'stores', 'address'] //专题相关
}, {
    'class': ['category'] //分类
}]
// 通用路由注册
_router.forEach((item, key) => {
    const keyName = Object.keys(item)[0]
    item[keyName].forEach(_item => {
        if(isExitsFunction(controllers[`${_item}Controller`].add)){
            router.post(`/api/${keyName}/${_item}/add`, Utils.checkToken, controllers[`${_item}Controller`].add) // 添加
        }
        if(isExitsFunction(controllers[`${_item}Controller`].update)){
            router.post(`/api/${keyName}/${_item}/update`, Utils.checkToken, controllers[`${_item}Controller`].update) // 更新
        }
        if(isExitsFunction(controllers[`${_item}Controller`].delete)){
            router.get(`/api/${keyName}/${_item}/delete`, Utils.checkToken, controllers[`${_item}Controller`].delete) // 删除
        }
        if(isExitsFunction(controllers[`${_item}Controller`].batchdelete)){
            router.post(`/api/${keyName}/${_item}/batchdelete`, Utils.checkToken, controllers[`${_item}Controller`].batchdelete) // 批量删除
        }
        if(isExitsFunction(controllers[`${_item}Controller`].list)){
            router.get(`/api/${keyName}/${_item}/list`, Utils.checkToken, controllers[`${_item}Controller`].list) // 获取列表
        }
        if(isExitsFunction(controllers[`${_item}Controller`].query)){
            router.get(`/api/${keyName}/${_item}/query`, Utils.checkToken, controllers[`${_item}Controller`].query) // 信息查询
        }
    })
})
router
    // 管理员登录退出
    .get('/api/system/logout', controllers.adminController.logout) // 用户退出
    .post('/api/system/login', controllers.adminController.login) // 用户登录
    .get('/api/system/info', Utils.checkToken, controllers.adminController.getUserInfo) // 获取用户信息
    .get('/api/system/power', Utils.checkToken, controllers.adminController.getUserPower) // 获取用户权限
    .post('/api/system/upload', upload.uploadFile, Utils.createUpload) //上传图片

    //导入基本数据
    .get('/import',installData.import)
    

module.exports = router;